package com.cl.engine;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;

import com.cl.domain.AppInfo;

import java.util.ArrayList;
import java.util.List;

/**
 * 业务方法，提供手机里面安装的所有的应用程序信息
 */
public class AppInfoProvider {
	public static List<AppInfo> getAppInfos(Context context) {
		PackageManager pm = context.getPackageManager();
		//所有的安装在系统上的应用程序包信息。
		List<PackageInfo> packageInfos = pm.getInstalledPackages(0);
		List<AppInfo> appInfos = new ArrayList<AppInfo>();
		for(PackageInfo packageInfo : packageInfos) {
			AppInfo appInfo = new AppInfo();
			//packInfo  相当于一个应用程序apk包的清单文件
			String packageName = packageInfo.packageName;
			String name = packageInfo.applicationInfo.loadLabel(pm).toString();
			Drawable icon = packageInfo.applicationInfo.loadIcon(pm);
			int flags = packageInfo.applicationInfo.flags;//应用程序信息的标记 相当于用户提交的答卷(如：存储或内存，用户或系统)
			boolean inRom;
			boolean userApp;
			if((flags & ApplicationInfo.FLAG_SYSTEM)==0){
				//用户软件
				userApp = true;
			}else {
				//系统软件
				userApp = false;
			}
			if((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == 0) {
				//软件存在内存
				inRom = true;
			}else {
				//软件存在外部存储
				inRom = false;
			}
			appInfo.setIcon(icon);
			appInfo.setInRom(inRom);
			appInfo.setName(name);
			appInfo.setUserApp(userApp);
			appInfo.setPackname(packageName);
			appInfos.add(appInfo);
		}
		return appInfos;
	}
}
